#include <stdio.h>

void swap (char* n1 , char* n2 , int width)
{

    int i ;

    for (i = 0 ; i < width ; i++)
    {

        char tmp = *n1 ;

        *n1 = *n2 ;

        *n2 = tmp ;

        n1++ ;

        n2++ ;

    }
    
}

int com_int (const void * n1 ,const void * n2)
{

    return *(int*)n1 - *(int*)n2 ;

}

void bubble_sort (void * array , int sz , int width , int (*com_int) (const void * n1 , const void * n2))
{

    int j ;

    int flag = 1 ;

    for (j = 0 ; j < sz ; j++)
    {

        for (int k = 0 ; k < sz - j - 1 ; k++)
        {

            if(com_int ( (char*) array + k * width , (char*) array + (k + 1) * width ) > 0)
            {

                swap ( (char*) array + k * width , (char*) array + (k + 1) * width , width) ;
                
                flag = 0 ;

            }

        }

        if (flag)
        {

            break ;

        }

    }

}

void printf_array (int * array , int sz)
{

    int i ;

    for(i = 0 ; i < sz ; i++)
    {

        printf("%d " , array [i]) ;

    }

}

int main ()
{

    int array [10] = { 0 } ;

    printf("请随便输入一组数字(10 个):") ;

    for (int i = 0 ; i < 10 ; i++)
    {

        scanf("%d" , &array [i]) ;

    }

    int sz = sizeof(array) / sizeof(array [0]) ;

    bubble_sort (array , sz , sizeof(array [0]) , com_int) ;

    printf_array (array , sz) ;

    return 0 ;

}